package com.leyou.service;

import com.leyou.common.pojo.PageResult;
import com.leyou.pojo.Sku;
import com.leyou.pojo.Spu;
import com.leyou.pojo.SpuDetail;
import com.leyou.bo.SpuBo;

import java.util.List;

public interface GoodsService {

    /**
     * 分页查询SPU
     *
     * @param page
     * @param rows
     * @param key
     * @param saleable true-上架 false-下架
     * @return
     */
    PageResult<SpuBo> querySpuByPageAndSort(Integer page, Integer rows, String key, Boolean saleable);

    /**
     * 新增商品信息
     *
     * @param spuBo
     */
    void save(SpuBo spuBo);

    /**
     * 修改商品信息
     *
     * @param spuBo
     */
    void updateGoods(SpuBo spuBo);

    /**
     * 通过spu_id查询SPU详情
     *
     * @param spuId
     * @return
     */
    SpuDetail querySpuDetailBySpuId(Long spuId);

    /**
     * 通过spu_id删除商品goods
     *
     * @param spuId
     */
    void deleteGoods(Long spuId);

    /**
     * 根据spu_id查询spu
     *
     * @param id
     * @return
     */
    Spu querySpuById(Long id);

    /**
     * 根据spu_id查询sku的集合
     *
     * @param spuId
     * @return
     */
    List<Sku> querySkusBySpuId(Long spuId);

    /**
     * 通过id查询sku
     *
     * @param id
     * @return
     */
    Sku querySkuById(Long id);

    /**
     * 通过spu_id修改商品上下架状态
     *
     * @param spuId
     */
    void changeSaleable(Long spuId);
}
